Ext.ns('Documento');
/*
 * Comienzo creacion de Documento
 */

/*
 * Crea el grid de documentos
 */

Documento.Grid = Ext.extend(Ext.grid.GridPanel, {
	width : 900,
	height : 380,
	frame : true,
	autoScroll : true,
	stripeRows : true,
	columnLines : true,
	collapsible : true,
	url : '/cake/syscable/MgDocumentos/buscaDocumento',
	initComponent : function() {
		this.rowActions = new Ext.ux.grid.RowActions({
					header : 'Acciones',
					autoWidth : false,
					width : 60,
					keepSelection : true,
					actions : [{
								iconIndex : 'action1',
								qtipIndex : 'qtip1',
								iconCls : 'icon-undo',
								tooltip : 'Eliminar'
							}]
				});
		this.rowActions.on('action', this.onRowAction, this);
		var config = {
			store : new Ext.data.Store({
						proxy : new Ext.data.HttpProxy({
									url : this.url
								}),
						reader : new Ext.data.JsonReader({
									id : 'MgDocumento-id',
									root : 'acciones',
									totalProperty : 'total',
									fields : [{
												name : 'MgDocumento-id'
											}, {
												name : 'MgAgente-descripcion'
											}, {
												name : 'MgDocumento-codigo_referencia'
											}, {
												name : 'MgDocumento-cantidad_facturas'
											}, {
												name : 'MgDocumento-adicionado_por'
											}, {
												name : 'MgDocumento-mg_agente_id'
											}, {
												name : 'MgDocumento-suma'
											}, {
												name : 'MgDocumento-valor'
											}, {
												name : 'MgDocumento-fecha_referencia',
												type : 'date',
												dateFormat : 'Y-m-d'
											}, {
												name : 'MgDocumento-modificado_por'
											}, {
												name : 'MgDocumento-modified',
												type : 'date',
												dateFormat : 'Y-m-d'
											}, {
												name : 'MgDocumento-created',
												type : 'date',
												dateFormat : 'Y-m-d'
											}, {
												name : 'action1',
												type : 'string'
											}, {
												name : 'qtip1',
												type : 'string'
											}]
								}),
						sm : new Ext.grid.RowSelectionModel({
									singleSelect : true,
									listeners : {
										load : {
											scope : this,
											fn : function() {
												this.getSelectionModel()
														.selectFirstRow();
											}
										}
									}
								})
					}),
			columns : [{
						header : "ID",
						dataIndex : 'MgDocumento-id',
						hidden : true
					}, {
						header : "No. Referencia",
						dataIndex : 'MgDocumento-codigo_referencia',
						width : 90
					}, {
						header : "Agente",
						dataIndex : 'MgAgente-descripcion',
						width : 150
					}, {
						header : "No. Facturas",
						dataIndex : 'MgDocumento-cantidad_facturas',
						width : 90
					}, {
						header : "Total Ingresadas",
						dataIndex : 'MgDocumento-suma',
						width : 90
					}, {
						header : "Valor",
						dataIndex : 'MgDocumento-valor',
						width : 90
					}, {
						header : "Fecha Referencia",
						dataIndex : 'MgDocumento-fecha_referencia',
						renderer : Ext.util.Format.dateRenderer('d-F-Y'),
						width : 100
					}, {
						header : "Adicionado Por",
						dataIndex : 'MgDocumento-adicionado_por',
						width : 100
					}, {
						header : "Fecha Creacion",
						dataIndex : 'MgDocumento-created',
						renderer : Ext.util.Format.dateRenderer('d-F-Y'),
						width : 100
					}, this.rowActions],
			title : "Listado de Documentos",
			plugins : [this.rowActions, new Ext.ux.grid.Search({
				mode : 'remote',
				iconCls : 'icon-zoom',
				dateFormat : 'm/d/Y',
				minLength : 1,
				width : 250,
				searchText : 'Buscar',
				searchTipText : 'Ingrese los datos a buscar y presione la tecla',
				selectAllText : 'Busca Todos',
				shortcutKey : 'b',
				shortcutModifier : 'shift',
				disableIndexes : ['MgDocumento-id']
			})],
			iconCls : 'icon-grid',
			viewConfig : {
				forceFit : true
			}
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		this.bbar = new Ext.PagingToolbar({
					pageSize : 12,
					store : this.store,
					displayInfo : true,
					displayMsg : 'Mostrando contratos del {0} - {1} de {2}',
					emptyMsg : 'No hay contratos que mostrar'
				});
		Documento.Grid.superclass.initComponent.apply(this, arguments);

	},
	onRender : function() {
		this.store.load();
		Documento.Grid.superclass.onRender.apply(this, arguments);
	}
});

Ext.reg('grdDocumento', Documento.Grid);
/*
 * Crea los campos y Forma para agregar documentos
 */

Documento.cbxAgente = Ext.extend(Ext.form.ComboBox, {
	minChars : 2,
	width : 190,
	initComponent : function() {
		var config = {
			store : new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : "/cake/syscable/MgDocumentos/comboboxExt/1/MgAgente"
						}),
				reader : new Ext.data.JsonReader({
							id : 'id',
							root : 'datos',
							totalProperty : 'total',
							fields : [{
										name : 'id'
									}, {
										name : 'descripcion'
									}]
						})
			}),
			mode : 'local',
			displayField : 'descripcion',
			valueField : 'id',
			typeAhead : true,
			loadingText : 'Buscando...',
			fieldLabel : 'Agente',
			hiddenName : 'data[MgDocumento][mg_agente_id]',
			triggerAction : 'all',
			allowBlank : false,
			emptyText : 'Escoja el agente...',
			forceSelection : true,
			selectOnFocus : true,
			listEmptyText : 'No hay resultados',
			lazyRender : true
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Documento.cbxAgente.superclass.initComponent.apply(this, arguments);
	},
	onRender : function() {
		this.store.load();
		Documento.cbxAgente.superclass.onRender.apply(this, arguments);
	}
});
Ext.reg('cbxAgente', Documento.cbxAgente);

Documento.frmAgregar = Ext.extend(Ext.form.FormPanel, {
	initComponent : function() {
		var config = {
			frame : false,
			bodyStyle : 'padding: 5px 5px 0',
			width : 440,
			height : 200,
			trackResetOnLoad : true,
			labelWidth : 120,
			id : 'frmAgregarDocumento',
			padre : 'vtnAgregarDocumento',
			labelAlign : 'right',
			defaultType : 'textfield',
			buttons : [{
				text : 'Agregar Documento',
				type : 'submit',
				scope : this,
				handler : function() {
					Ext.getCmp(this.id).form.submit({
								timeout : 350,
								waitMsg : 'Porfavor Espere',
								waitTitle : 'Guardando Datos',
								url : '/cake/syscable/MgDocumentos/insertarExt',
								scope : this,
								success : function(form, action) {
									Ext.MessageBox.alert('Mensaje',
											'Documento Agregado exitosamente!');
									// Ext.getCmp(this.padre).close();
									Ext.getCmp(this.id).getForm().reset();
									Ext.getCmp('grdDocumentoPrincipal').store
											.load();
								},
								failure : function() {
									Ext.MessageBox.alert('Mensaje',
											'Error al Guardar!');
								}
							});
				}
			}],
			items : [{
						xtype : 'numberfield',
						id : 'nfCodigoReferenciaDocumento',
						fieldLabel : 'Codigo Referencia',
						name : 'data[MgDocumento][codigo_referencia]',
						allowBlank : false,
						blankText : 'No puede estar vacio'
					}, {
						xtype : 'cbxAgente',
						id : 'cbxAgenteDocumento'
					}, {
						xtype : 'numberfield',
						id : 'nfCantidadFacturasDocumento',
						fieldLabel : 'Cantidad Facturas',
						name : 'data[MgDocumento][cantidad_facturas]',
						allowBlank : false,
						blankText : 'No puede estar vacio',
						minValue : 1,
						minText : "La cantidad debe ser mayor que 0"
					}, {
						xtype : 'numberfield',
						id : 'nfValorDocumento',
						fieldLabel : 'Valor',
						name : 'data[MgDocumento][valor]',
						allowBlank : false,
						blankText : 'No puede estar vacio',
						minValue : 1,
						minEText : "La cantidad debe ser mayor que 0"
					}, {
						xtype : 'datefield',
						fieldLabel : 'Fecha Referencia',
						id : 'dfFechaReferenciaDocumento',
						labelWidth : 110,
						name : 'data[MgDocumento][fecha_referencia]',
						width : 190,
						allowBlank : false,
						format : 'd-m-Y',
						todayText : 'Hoy'
					}]
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Documento.frmAgregar.superclass.initComponent.apply(this, arguments);
	}
});
Ext.reg('frmAgregarDocumento', Documento.frmAgregar);

/*
 * FINALIZA CREACION DE documento
 * 
 */
Documento.pnlPrincipal = Ext.extend(Ext.Panel, {
	widht : 900,
	height : 630,
	initComponent : function() {
		var config = {
			layout : 'border',
			frame : true,
			title : 'Documentos',
			iconCls : 'icon-documento',
			items : [{
						region : 'center',
						split : true,
						frame : false,
						border : false,
						items : [{
									xtype : 'grdDocumento',
									id : 'grdDocumentoPrincipal'
								}, {
									xtype : 'grdHistorialMovimientos',
									id : 'grdHistorialMovimientosDocumento'
								}]
					}],
			tbar : [{
						text : 'Agregar Documento',
						tooltip : 'Agregar un Documento',
						iconCls : 'icon-plus',
						handler : function() {
							Ext.getCmp('vtnAgregarDocumento').show(this);
							Ext.getCmp('frmAgregarDocumento').getForm().reset();
						}
					}]
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Documento.pnlPrincipal.superclass.initComponent.apply(this, arguments);
	},
	onRender : function() {
		vntAgregarDocumento = new Ext.Window({
					id : 'vtnAgregarDocumento',
					layout : 'border',
					closable : true,
					closeAction : 'hide',
					width : 550,
					height : 210,
					plain : false,
					maximizable : false,
					resizable : false,
					// modal: true,
					title : 'Agregar documento',
					frame : true,
					items : [{
								region : 'center',
								width : 200,
								layout : 'fit',
								frame : false,
								border : false,
								items : [{
											xtype : 'frmAgregarDocumento',
											id : 'frmAgregarDocumento'
										}]
							}]
				});
		Documento.pnlPrincipal.superclass.onRender.apply(this, arguments);
	}
});
Ext.reg('pnlPrincipalDocumento', Documento.pnlPrincipal);